﻿using System;
using System.Collections.Generic;
using System.Text;
using Model;
using Db.DAL;

namespace Db.BLL
{
    /// <summary>
    /// 对象名称：基础对象名称业务逻辑类（业务逻辑层）
    /// 对象说明：该类的功能描述与摘要说明。
    /// 调用说明：本类提供了各种业务逻辑方法，供用户界面层或其它业务逻辑层中的类进行调用。
    /// 作者姓名：lb,ykf
    /// 编写日期：
    /// </summary>
    public class Users
    {
        /// <summary>
        /// 对基础对象名称（Users）实例对象，进行数据有效性检查。
        /// </summary>
        /// <param name="users">基础对象名称（Users）实例对象</param>
        public static void CheckValid(Model.Users users)
        {
            #region 检查各属性是否符合空值约束
            #endregion

            if (DataValid.IsOutLength(users.UserName, 20))
                throw new Exception("“UserName”长度不能超过 20 个汉字或字符，请您确认输入是否正确。");

            if (DataValid.IsOutLength(users.Description, 50))
                throw new Exception("“Description”长度不能超过 50 个汉字或字符，请您确认输入是否正确。");

            if (DataValid.IsOutLength(users.PassWord, 20))
                throw new Exception("“PassWord”长度不能超过 20 个汉字或字符，请您确认输入是否正确。");

        }


        /// <summary>
        /// 将基础对象名称（Users）数据，采用INSERT操作插入到数据库中，并返回受影响的行数。
        /// </summary>
        /// <param name="users">基础对象名称（Users）实例对象</param>
        public static int Insert(Model.Users users)
        {
            CheckValid(users);
            return new DAL.Users().Insert(users);
        }


        /// <summary>
        /// 将基础对象名称（Users）数据，根据主键“ID（ID）”采用UPDATE操作更新到数据库中，并返回受影响的行数。
        /// </summary>
        /// <param name="users">基础对象名称（Users）实例对象</param>
        public static int Update(Model.Users users)
        {
            CheckValid(users);
            return new DAL.Users().Update(users);
        }


        /// <summary>
        /// 根据基础对象名称（Users）的主键“ID（ID）”采用DELETE操作从数据库中删除相关记录，并返回受影响的行数。
        /// </summary>
        /// <param name="iD">基础对象名称（Users）的主键“ID（ID）”</param>
        public static int Delete(int iD)
        {
            return new DAL.Users().Delete(iD);
        }


        /// <summary>
        /// 根据基础对象名称（Users）的主键“ID（ID）”从数据库中获取基础对象名称（Users）的实例。
        /// 成功从数据库中取得记录返回新基础对象名称（Users）的实例“，没有取到记录返回null值。
        /// </summary>
        /// <param name="iD">基础对象名称（Users）的主键“ID（ID）”</param>
        public static Model.Users GetDataByID(int iD)
        {
            return new DAL.Users().GetDataByID(iD);
        }


        /// <summary>
        /// 根据基础对象名称（Users）的主键“ID（ID）”从数据库中获取基础对象名称（Users）的实例。
        /// 成功从数据库中取得记录返回新基础对象名称（Users）的实例“，没有取到记录返回null值。
        /// </summary>
        /// <param name="iD">基础对象名称（Users）的主键“ID（ID）”</param>
        public static Model.Users GetDataByID(string iD)
        {
            if (!DataValid.IsInt(iD))
                throw new Exception("系统传入参数类型错误，请您通过系统提供的按钮或链接，来访问相关功能模块。详细信息：通常造成该错误的原因为，您尝试通过直接输入地址来访问系统的相关功能模块而造成。请您单击“确定”按钮返回上一页面，如多次重试后仍出现此错误，请您与系统管理员联系。");

            return new DAL.Users().GetDataByID(Convert.ToInt32(iD));
        }


        /// <summary>
        /// 从数据库中读取并返回所有基础对象名称（Users）List列表。
        /// </summary>
        public static List<Model.Users> GetAllList()
        {
            return new DAL.Users().GetAllList();
        }
    }
}
